package model;

/**
 * Classe che incapsula e modella le informazioni associate ad un utente dell'applicazione. 
 * In particolare sono stati implementati metodi per impostare e ottenere info quali 
 * il nome sintetico dell'utente, il cognome, la data di registrazione,lo username e 
 * la password.Inoltre per ogni utente si tiene conto del numero di valutazioni fatte
 * 
 * @author Gruppo Capo, De Notaris, Pastore e Vento
 * @since Luglio 2011
 * 
 */
public class User {

	// Attributi di classe
	private String username;
	private String password;
	private String name;
	private String surname;
	private String registrationDate;
	private float ranking;
	private int valutationsNumber;

	/**
	 * Costruttore vuoto della classe User.
	 * 
	 */
	public User() {
		this.username = "";
		this.password = "";
		this.registrationDate = "";
		this.ranking = 0;
		this.valutationsNumber = 0;
	}

	/**
	 * Costruttore della classe User.
	 * 
	 * @param username
	 *            username associato all'utente
	 * @param password
	 *            password associata all'utente
	 * @param registrationDate
	 *            data di registrazione dell'utente
	 * @param ranking
	 *            ranking associato all'utente
	 * @param valutationsNumber
	 *            numero di valutazioni effettuate dall'utente
	 */
	public User(String username, String password, String registrationDate,
			float ranking, int valutationsNumber) {
		this.username = username;
		this.password = password;
		this.registrationDate = registrationDate;
		this.ranking = ranking;
		this.valutationsNumber = valutationsNumber;
	}

	/**
	 * Metodo che restituisce l'username associato all'utente corrente.
	 * 
	 * @return username associato all'utente corrente
	 */
	public String getUsername() {
		return username;
	}

	/**
	 * Metodo per impostare l'username da associare all'utente corrente.
	 * 
	 * @param username
	 *            username da associare all'utente corrente
	 */
	public void setUserName(String username) {
		this.username = username;
	}

	/**
	 * Metodo che restituisce la password associata all'utente corrente.
	 * 
	 * @return password associata all'utente corrente
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * Metodo per impostare la password da associare all'utente corrente.
	 * 
	 * @param password
	 *            password da associare all'utente corrente
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * Metodo che restituisce la data di registrazione dell'utente corrente.
	 * 
	 * @return data di registrazione dell'utente corrente
	 */
	public String getRegistrationDate() {
		return registrationDate;
	}

	/**
	 * Metodo per impostare la data di registrazione da associare all'utente
	 * corrente.
	 * 
	 * @param registrationDate
	 *            data di registrazione da associare all'utente corrente
	 */
	public void setRegistrationDate(String registrationDate) {
		this.registrationDate = registrationDate;
	}

	/**
	 * Metodo che restituisce il ranking associato all'utente corrente.
	 * 
	 * @return ranking associato all'utente corrente
	 */
	public float getRanking() {
		return ranking;
	}

	/**
	 * Metodo per impostare il ranking da associare all'utente corrente.
	 * 
	 * @param ranking
	 *            ranking da associare all'utente corrente
	 */
	public void setRanking(float ranking) {
		this.ranking = ranking;
	}

	/**
	 * Metodo che restituisce il numero di valutazioni associate all'utente
	 * corrente.
	 * 
	 * @return numero di valutazioni associate all'utente corrente
	 */
	public int getValutationsNumber() {
		return valutationsNumber;
	}

	/**
	 * Metodo per impostare il numero di valutazioni da associare all'utente
	 * corrente.
	 * 
	 * @param valutationsNumber
	 *            numero di valutazioni da associare all'utente corrente
	 */
	public void setValutationsNumber(int valutationsNumber) {
		this.valutationsNumber = valutationsNumber;
	}
	
	/**
	 * Metodo per impostare il nome dell'utente corrente.
	 * 
	 * @param name
	 *            nome dell'utente corrente
	 */
	public void setName(String name) {
		this.name = name;
	}
	
	/**
	 * Metodo che restituisce il nome dell'utente corrente.
	 * 
	 * @return String nome associato all'utente corrente
	 */
	public String getName() {
		return name;
	}

	/**
	 * Metodo per impostare il cognome dell'utente corrente.
	 * 
	 * @param surname
	 *            cognome dell'utente corrente
	 */
	public void setSurname(String surname) {
		this.surname = surname;
	}
	
	/**
	 * Metodo che restituisce il cognome dell'utente corrente.
	 * 
	 * @return String cognome associato all'utente corrente
	 */
	public String getSurname() {
		return surname;
	}

	/**
	 * Metodo che restituisce come stringa le informazioni associate all'utente
	 * corrente.
	 * 
	 * @return informazioni associate all'utente corrente
	 */
	@Override
	public String toString() {
		return "username:" + getUsername() + " password:" + getPassword()
				+ " registration date:" + getRegistrationDate() + " ranking:"
				+ getRanking() + " valutations number:"
				+ getValutationsNumber();

	}
}